/**
 * SentenceCreator
 * @version 1.0
 * Copyright: Wolna licencja
 */
package pl.put.io.code.core;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * Klasa służąca do stworzenia zdań.
 * 
 * </p>
 * 
 */
public class SenteceCreator {

    private List<String> names = new ArrayList<String>();
    private List<String> activities = new ArrayList<String>();
    private List<String> places = new ArrayList<String>();

    /**
     * wypełnia listy {@link #names},{@link #activities},{@link #places}
     * 
     * @param names
     *            lista linii odczytanych z pliku
     *            {@link Controller#NAMES_FILE_NAME}
     * @param activities
     *            lista linii odczytanych z pliku
     *            {@link Controller#ACTIVITIES_FILE_NAME}
     * @param places
     *            lista linii odczytanych z pliku
     *            {@link Controller#PLACES_FILE_NAME}
     */
    public SenteceCreator(List<String> names, List<String> activities,
	    List<String> places) {
	this.names.addAll(names);
	this.activities.addAll(activities);
	this.places.addAll(places);
    }

    /**
     * tworzy zdania; linie wylosowane z poszczególnych list stanowią składowe
     * zdania<br>
     * <code>
     * (int) ((Math.random() * names.size()));
     * </code> </br>
     * 
     * @param numberOfSentences
     *            liczba zdań do utworzenia
     * @return lista utworzonych zdań
     * 
     */
    public List<String> createSentences(int numberOfSentences) {
	final List<String> result = new ArrayList<String>();
	for (int i = 0; i < numberOfSentences; i++) {
	    StringBuffer sentence = new StringBuffer();
	    int idx = (int) ((Math.random() * names.size()));
	    sentence.append(names.get(idx) + " ");
	    idx = (int) ((Math.random() * activities.size()));
	    sentence.append(activities.get(idx) + " ");
	    idx = (int) ((Math.random() * places.size()));
	    sentence.append(places.get(idx) + ".");
	    result.add(sentence.toString());
	}
	return result;
    }

}
